<?php
/*
 * 此文件用于验证短信服务API接口，供开发时参考
 * 执行验证前请确保文件为utf-8编码，并替换相应参数为您自己的信息，并取消相关调用的注释
 * 建议验证前先执行Test.php验证PHP环境
 *
 * 2017/11/30
 */

//namespace Aliyun\DySDKLite\Sms;
namespace app\common\ali_note;
use Aliyun\DySDKLite\SignatureHelper;

class SendSms{
    private $access_key_id = '';
    private $access_key_secret = '';
    private $template_code = '';
    private $free_sign_name = '';

    public function __construct($access_key_id,$access_key_secret,$template_code,$free_sign_name) {
        $this->access_key_id = $access_key_id;
        $this->access_key_secret = $access_key_secret;
        $this->template_code = $template_code;
        $this->free_sign_name = $free_sign_name;
    }


    /**
     * @date 2019/12/13 14:38
     * @description 发送短信
     * @author cxh
     * @param $tel
     * @param $code
     * @param null $content
     * @return string
     */
    public function send($tel,$code,$content = null){
        header("Content-Type: text/plain; charset=utf-8");
        //echo ;

        //print_r($setSmsFreeSignName);die;
        $params = array ();

        // *** 需用户填写部分 ***
        //$upid=$tel;
        /*
         * $ci = & get_instance();
        $ip=$_SERVER["REMOTE_ADDR"]?$_SERVER["REMOTE_ADDR"]:rand(10,1000).time();
        $tdata = $ci->public->qselectrow('wx_telcode',"tel='$tel'");//短信 限制次数

        $num = $tdata['num']+1;
        if(!empty($tdata)){
            if($tdata['num']<20){
                $data = array(
                    'num' => $num,
                );
                $ci->public->qupdate('wx_telcode',$data,array('tel'=>$tel));
            }else{
                return "手机号码验证次数过多！";
                exit();
            }

        }else{
            $data = array(
                'tel' => $tel,
                'num' => 1,
            );
            $ci->public->qinsert('wx_telcode',$data);
        }
        */
        // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息

        //$ci->db->where('id',3);
        //$noteconfig=$ci->db->get('wx_pay')->result_array();

        $accessKeyId = $this->access_key_id;
        $accessKeySecret = $this->access_key_secret;
        $smsFreeSignName = $this->free_sign_name;
        $template_code = $this->template_code;

        // fixme 必填: 短信接收号码
        $params["PhoneNumbers"] = $tel;

        // fixme 必填: 短信签名，应严格按"签名名称"填写，请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $params["SignName"] = $smsFreeSignName;

        // fixme 必填: 短信模板Code，应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $params["TemplateCode"] = $template_code;

        // fixme 可选: 设置模板参数, 假如模板中存在变量需要替换则为必填项
        $params['TemplateParam'] = Array (
            "code" => $code,
            //"product" => ''//$content
        );

        // fixme 可选: 设置发送短信流水号
        $params['OutId'] = "12345";

        // fixme 可选: 上行短信扩展码, 扩展码字段控制在7位或以下，无特殊需求用户请忽略此字段
        $params['SmsUpExtendCode'] = "1234567";

        // *** 需用户填写部分结束, 以下代码若无必要无需更改 ***
        if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
            $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
        }
        //print_r($params);die;

        require_once "SignatureHelper.php";

        // 初始化SignatureHelper实例用于设置参数，签名以及发送请求
        $helper = new SignatureHelper();

        // 此处可能会抛出异常，注意catch
        $content = $helper->request(
            $accessKeyId,
            $accessKeySecret,
            "dysmsapi.aliyuncs.com",
            array_merge($params, array(
                "RegionId" => "cn-hangzhou",
                "Action" => "SendSms",
                "Version" => "2017-05-25",
            ))
            // fixme 选填: 启用https
            // ,true
        );
        return json_encode($content);
    }

    //ini_set("display_errors", "on"); // 显示错误提示，仅用于测试时排查问题
    // error_reporting(E_ALL); // 显示所有错误提示，仅用于测试时排查问题
    //set_time_limit(0); // 防止脚本超时，仅用于测试使用，生产环境请按实际情况设置
    //header("Content-Type: text/plain; charset=utf-8"); // 输出为utf-8的文本格式，仅用于测试

    // 验证发送短信(SendSms)接口
    //print_r(sendSms());
}